home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Technology Seed / Jan. '98 ATS.toast / QuickTime™ 3.0b11 / QTPublicInterfaces / PInterfaces / ImageCodec.p < prev    next >
Encoding:
Text File  |  1998-01-12  |  41.2 KB  |  1,061 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        ImageCodec.p
  3.  
  4.      Contains:    QuickTime interfaces
  5.  
  6.      Version:    Technology:    
  7.                  Release:    QuickTime 3.0 Beta
  8.  
  9.      Copyright:    © 1990-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT ImageCodec;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __IMAGECODEC__}
  28. {$SETC __IMAGECODEC__ := 1}
  29.  
  30. {$I+}
  31. {$SETC ImageCodecIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __MACTYPES__}
  35. {$I MacTypes.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QUICKDRAW__}
  38. {$I Quickdraw.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __QDOFFSCREEN__}
  41. {$I QDOffscreen.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __MACWINDOWS__}
  44. {$I MacWindows.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __IMAGECOMPRESSION__}
  47. {$I ImageCompression.p}
  48. {$ENDC}
  49. {$IFC UNDEFINED __COMPONENTS__}
  50. {$I Components.p}
  51. {$ENDC}
  52. {$IFC UNDEFINED __MOVIES__}
  53. {$I Movies.p}
  54. {$ENDC}
  55. {$IFC UNDEFINED __GXTYPES__}
  56. {$I GXTypes.p}
  57. {$ENDC}
  58.  
  59.  
  60. {$PUSH}
  61. {$ALIGN MAC68K}
  62. {$LibExport+}
  63.  
  64. {    codec capabilities flags    }
  65.  
  66. CONST
  67.     codecCanScale                = $00000001;
  68.     codecCanMask                = $00000002;
  69.     codecCanMatte                = $00000004;
  70.     codecCanTransform            = $00000008;
  71.     codecCanTransferMode        = $00000010;
  72.     codecCanCopyPrev            = $00000020;
  73.     codecCanSpool                = $00000040;
  74.     codecCanClipVertical        = $00000080;
  75.     codecCanClipRectangular        = $00000100;
  76.     codecCanRemapColor            = $00000200;
  77.     codecCanFastDither            = $00000400;
  78.     codecCanSrcExtract            = $00000800;
  79.     codecCanCopyPrevComp        = $00001000;
  80.     codecCanAsync                = $00002000;
  81.     codecCanMakeMask            = $00004000;
  82.     codecCanShift                = $00008000;
  83.     codecCanAsyncWhen            = $00010000;
  84.     codecCanShieldCursor        = $00020000;
  85.     codecCanManagePrevBuffer    = $00040000;
  86.     codecHasVolatileBuffer        = $00080000;
  87.     codecWantsRegionMask        = $00100000;
  88.     codecImageBufferIsOnScreen    = $00200000;
  89.     codecWantsDestinationPixels    = $00400000;
  90.     codecWantsSpecialScaling    = $00800000;
  91.     codecHandlesInputs            = $01000000;
  92.     codecCanDoIndirectSurface    = $02000000;
  93.     codecIsSequenceSensitive    = $04000000;
  94.     codecRequiresOffscreen        = $08000000;
  95.     codecRequiresMaskBits        = $10000000;
  96.     codecCanRemapResolution        = $20000000;
  97.     codecIsDirectToScreenOnly    = $40000000;
  98.  
  99.  
  100. TYPE
  101.     CodecCapabilitiesPtr = ^CodecCapabilities;
  102.     CodecCapabilities = RECORD
  103.         flags:                    LONGINT;
  104.         wantedPixelSize:        INTEGER;
  105.         extendWidth:            INTEGER;
  106.         extendHeight:            INTEGER;
  107.         bandMin:                INTEGER;
  108.         bandInc:                INTEGER;
  109.         pad:                    INTEGER;
  110.         time:                    UInt32;
  111.     END;
  112.  
  113. {    codec condition flags    }
  114.  
  115. CONST
  116.     codecConditionFirstBand        = $00000001;
  117.     codecConditionLastBand        = $00000002;
  118.     codecConditionFirstFrame    = $00000004;
  119.     codecConditionNewDepth        = $00000008;
  120.     codecConditionNewTransform    = $00000010;
  121.     codecConditionNewSrcRect    = $00000020;
  122.     codecConditionNewMask        = $00000040;
  123.     codecConditionNewMatte        = $00000080;
  124.     codecConditionNewTransferMode = $00000100;
  125.     codecConditionNewClut        = $00000200;
  126.     codecConditionNewAccuracy    = $00000400;
  127.     codecConditionNewDestination = $00000800;
  128.     codecConditionFirstScreen    = $00001000;
  129.     codecConditionDoCursor        = $00002000;
  130.     codecConditionCatchUpDiff    = $00004000;
  131.     codecConditionMaskMayBeChanged = $00008000;
  132.     codecConditionToBuffer        = $00010000;
  133.     codecConditionCodecChangedMask = $80000000;
  134.  
  135.  
  136.     codecInfoResourceType        = 'cdci';                        {  codec info resource type  }
  137.     codecInterfaceVersion        = 2;                            {  high word returned in component GetVersion  }
  138.  
  139.  
  140. TYPE
  141.     CDSequenceDataSourceQueueEntryPtr = ^CDSequenceDataSourceQueueEntry;
  142.     CDSequenceDataSourceQueueEntry = RECORD
  143.         nextBusy:                Ptr;
  144.         descSeed:                LONGINT;
  145.         dataDesc:                Handle;
  146.         data:                    Ptr;
  147.         dataSize:                LONGINT;
  148.         useCount:                LONGINT;
  149.         frameTime:                TimeValue;
  150.         frameDuration:            TimeValue;
  151.         timeScale:                TimeValue;
  152.     END;
  153.  
  154.     CDSequenceDataSourcePtr = ^CDSequenceDataSource;
  155.     CDSequenceDataSource = RECORD
  156.         recordSize:                LONGINT;
  157.         next:                    Ptr;
  158.         seqID:                    ImageSequence;
  159.         sourceID:                ImageSequenceDataSource;
  160.         sourceType:                OSType;
  161.         sourceInputNumber:        LONGINT;
  162.         dataPtr:                Ptr;
  163.         dataDescription:        Handle;
  164.         changeSeed:                LONGINT;
  165.         transferProc:            ICMConvertDataFormatUPP;
  166.         transferRefcon:            Ptr;
  167.         dataSize:                LONGINT;
  168.                                                                         {  fields available in QT 3 and later  }
  169.         dataQueue:                QHdrPtr;                                {  queue of CDSequenceDataSourceQueueEntry structures }
  170.         originalDataPtr:        Ptr;
  171.         originalDataSize:        LONGINT;
  172.         originalDataDescription: Handle;
  173.         originalDataDescriptionSeed: LONGINT;
  174.     END;
  175.  
  176.     ICMFrameTimeInfoPtr = ^ICMFrameTimeInfo;
  177.     ICMFrameTimeInfo = RECORD
  178.         startTime:                wide;
  179.         scale:                    LONGINT;
  180.         duration:                LONGINT;
  181.     END;
  182.  
  183.     CodecCompressParamsPtr = ^CodecCompressParams;
  184.     CodecCompressParams = RECORD
  185.         sequenceID:                ImageSequence;                            {  precompress,bandcompress  }
  186.         imageDescription:        ImageDescriptionHandle;                    {  precompress,bandcompress  }
  187.         data:                    Ptr;
  188.         bufferSize:                LONGINT;
  189.         frameNumber:            LONGINT;
  190.         startLine:                LONGINT;
  191.         stopLine:                LONGINT;
  192.         conditionFlags:            LONGINT;
  193.         callerFlags:            CodecFlags;
  194.         capabilities:            CodecCapabilitiesPtr;                    {  precompress,bandcompress  }
  195.         progressProcRecord:        ICMProgressProcRecord;
  196.         completionProcRecord:    ICMCompletionProcRecord;
  197.         flushProcRecord:        ICMFlushProcRecord;
  198.         srcPixMap:                PixMap;                                    {  precompress,bandcompress  }
  199.         prevPixMap:                PixMap;
  200.         spatialQuality:            CodecQ;
  201.         temporalQuality:        CodecQ;
  202.         similarity:                Fixed;
  203.         dataRateParams:            DataRateParamsPtr;
  204.         reserved:                LONGINT;
  205.                                                                         {  The following fields only exist for QuickTime 2.1 and greater  }
  206.         majorSourceChangeSeed:    UInt16;
  207.         minorSourceChangeSeed:    UInt16;
  208.         sourceData:                CDSequenceDataSourcePtr;
  209.                                                                         {  The following fields only exit for QuickTime 2.5 and greater  }
  210.         preferredPacketSizeInBytes: LONGINT;
  211.                                                                         {  The following fields only exit for QuickTime 3.0 and greater  }
  212.         requestedBufferWidth:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  213.         requestedBufferHeight:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  214.     END;
  215.  
  216.     CodecDecompressParamsPtr = ^CodecDecompressParams;
  217.     CodecDecompressParams = RECORD
  218.         sequenceID:                ImageSequence;                            {  predecompress,banddecompress  }
  219.         imageDescription:        ImageDescriptionHandle;                    {  predecompress,banddecompress  }
  220.         data:                    Ptr;
  221.         bufferSize:                LONGINT;
  222.         frameNumber:            LONGINT;
  223.         startLine:                LONGINT;
  224.         stopLine:                LONGINT;
  225.         conditionFlags:            LONGINT;
  226.         callerFlags:            CodecFlags;
  227.         capabilities:            CodecCapabilitiesPtr;                    {  predecompress,banddecompress  }
  228.         progressProcRecord:        ICMProgressProcRecord;
  229.         completionProcRecord:    ICMCompletionProcRecord;
  230.         dataProcRecord:            ICMDataProcRecord;
  231.         port:                    CGrafPtr;                                {  predecompress,banddecompress  }
  232.         dstPixMap:                PixMap;                                    {  predecompress,banddecompress  }
  233.         maskBits:                BitMapPtr;
  234.         mattePixMap:            PixMapPtr;
  235.         srcRect:                Rect;                                    {  predecompress,banddecompress  }
  236.         matrix:                    MatrixRecordPtr;                        {  predecompress,banddecompress  }
  237.         accuracy:                CodecQ;                                    {  predecompress,banddecompress  }
  238.         transferMode:            INTEGER;                                {  predecompress,banddecompress  }
  239.         frameTime:                ICMFrameTimePtr;                        {  banddecompress  }
  240.         reserved:                ARRAY [0..0] OF LONGINT;
  241.                                                                         {  The following fields only exist for QuickTime 2.0 and greater  }
  242.         matrixFlags:            SInt8;                                    {  high bit set if 2x resize  }
  243.         matrixType:                SInt8;
  244.         dstRect:                Rect;                                    {  only valid for simple transforms  }
  245.                                                                         {  The following fields only exist for QuickTime 2.1 and greater  }
  246.         majorSourceChangeSeed:    UInt16;
  247.         minorSourceChangeSeed:    UInt16;
  248.         sourceData:                CDSequenceDataSourcePtr;
  249.         maskRegion:                RgnHandle;
  250.                                                                         {  The following fields only exist for QuickTime 2.5 and greater  }
  251.         wantedDestinationPixelTypes: ^OSTypePtr;                        {  Handle to 0-terminated list of OSTypes  }
  252.         screenFloodMethod:        LONGINT;
  253.         screenFloodValue:        LONGINT;
  254.         preferredOffscreenPixelSize: INTEGER;
  255.                                                                         {  The following fields only exist for QuickTime 3.0 and greater  }
  256.         syncFrameTime:            ICMFrameTimeInfoPtr;                    {  banddecompress  }
  257.         needUpdateOnTimeChange:    BOOLEAN;                                {  banddecompress  }
  258.         enableBlackLining:        BOOLEAN;
  259.         needUpdateOnSourceChange: BOOLEAN;                                {  band decompress  }
  260.         pad:                    BOOLEAN;
  261.         unused:                    LONGINT;
  262.         finalDestinationPort:    CGrafPtr;
  263.         requestedBufferWidth:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  264.         requestedBufferHeight:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  265.     END;
  266.  
  267.  
  268. CONST
  269.     matrixFlagScale2x            = $00000080;
  270.     matrixFlagScale1x            = $00000040;
  271.     matrixFlagScaleHalf            = $00000020;
  272.  
  273.     kScreenFloodMethodNone        = 0;
  274.     kScreenFloodMethodKeyColor    = 1;
  275.     kScreenFloodMethodAlpha        = 2;
  276.  
  277.     kFlushLastQueuedFrame        = 0;
  278.     kFlushFirstQueuedFrame        = 1;
  279.  
  280.     kNewImageGWorldErase        = $00000001;
  281.  
  282.  
  283. TYPE
  284.     ImageSubCodecDecompressCapabilitiesPtr = ^ImageSubCodecDecompressCapabilities;
  285.     ImageSubCodecDecompressCapabilities = RECORD
  286.         recordSize:                LONGINT;                                {  sizeof(ImageSubCodecDecompressCapabilities) }
  287.         decompressRecordSize:    LONGINT;                                {  size of your codec's decompress record }
  288.         canAsync:                BOOLEAN;                                {  default true }
  289.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  290.     END;
  291.  
  292.  
  293. CONST
  294.     kCodecFrameTypeUnknown        = 0;
  295.     kCodecFrameTypeKey            = 1;
  296.     kCodecFrameTypeDifference    = 2;
  297.     kCodecFrameTypeDroppableDifference = 3;
  298.  
  299.  
  300. TYPE
  301.     ImageSubCodecDecompressRecordPtr = ^ImageSubCodecDecompressRecord;
  302.     ImageSubCodecDecompressRecord = RECORD
  303.         baseAddr:                Ptr;
  304.         rowBytes:                LONGINT;
  305.         codecData:                Ptr;
  306.         progressProcRecord:        ICMProgressProcRecord;
  307.         dataProcRecord:            ICMDataProcRecord;
  308.         userDecompressRecord:    Ptr;                                    {  pointer to codec-specific per-band data }
  309.         frameType:                SInt8;
  310.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  311.     END;
  312.  
  313. {  name of parameters or effect -- placed in root container, optional  }
  314.  
  315. CONST
  316.     kParameterTitleName            = 'name';
  317.     kParameterTitleID            = 1;
  318.  
  319. {  name of parameters or effect -- placed in root container, required  }
  320.     kParameterWhatName            = 'what';
  321.     kParameterWhatID            = 1;
  322.  
  323. {  maximum number of sources -- placed in root container, required  }
  324.     kParameterSourceCountName    = 'srcs';
  325.     kParameterSourceCountID        = 1;
  326.  
  327.  
  328.     kParameterDependencyName    = 'deep';
  329.     kParameterDependencyID        = 1;
  330.  
  331.     kParameterListDependsUponColorProfiles = 'prof';
  332.     kParameterListDependsUponFonts = 'font';
  333.  
  334.  
  335. TYPE
  336.     ParameterDependancyRecordPtr = ^ParameterDependancyRecord;
  337.     ParameterDependancyRecord = RECORD
  338.         dependCount:            LONGINT;
  339.         depends:                ARRAY [0..0] OF OSType;
  340.     END;
  341.  
  342. {
  343.    enumeration list in container -- placed in root container, optional unless used by a
  344.    parameter in the list
  345. }
  346.  
  347. CONST
  348.     kParameterEnumList            = 'enum';
  349.  
  350.  
  351. TYPE
  352.     EnumValuePairPtr = ^EnumValuePair;
  353.     EnumValuePair = RECORD
  354.         value:                    LONGINT;
  355.         name:                    Str255;
  356.     END;
  357.  
  358.     EnumListRecordPtr = ^EnumListRecord;
  359.     EnumListRecord = RECORD
  360.         enumCount:                LONGINT;                                {  number of enumeration items to follow }
  361.         values:                    ARRAY [0..0] OF EnumValuePair;            {  values and names for them, packed  }
  362.     END;
  363.  
  364. {  atom type of parameter }
  365.  
  366. CONST
  367.     kParameterAtomTypeAndID        = 'type';
  368.  
  369.     kNoAtom                        = 'none';                        {  atom type for no data got/set }
  370.     kAtomNoFlags                = $00000000;
  371.     kAtomNotInterpolated        = $00000001;                    {  atom can never be interpolated }
  372.     kAtomInterpolateIsOptional    = $00000002;                    {  atom can be interpolated, but it is an advanced user operation }
  373.  
  374.  
  375. TYPE
  376.     ParameterAtomTypeAndIDPtr = ^ParameterAtomTypeAndID;
  377.     ParameterAtomTypeAndID = RECORD
  378.         atomType:                QTAtomType;                                {  type of atom this data comes from/goes into }
  379.         atomID:                    QTAtomID;                                {  ID of atom this data comes from/goes into }
  380.         atomFlags:                LONGINT;                                {  options for this atom }
  381.         atomName:                Str255;                                    {  name of this value type }
  382.     END;
  383.  
  384. {  data type of a parameter }
  385.  
  386. CONST
  387.     kParameterDataType            = 'data';
  388.  
  389.     kParameterTypeDataLong        = 2;                            {  integer value }
  390.     kParameterTypeDataFixed        = 3;                            {  fixed point value }
  391.     kParameterTypeDataRGBValue    = 8;                            {  RGBColor data }
  392.     kParameterTypeDataDouble    = 11;                            {  IEEE 64 bit floating point value }
  393.     kParameterTypeDataText        = 'text';                        {  editable text item }
  394.     kParameterTypeDataEnum        = 'enum';                        {  enumerated lookup value }
  395.     kParameterTypeDataBitField    = 'bool';                        {  bit field value (something that holds boolean(s)) }
  396.     kParameterTypeDataImage        = 'imag';                        {  reference to an image via Picture data }
  397.  
  398.  
  399. TYPE
  400.     ParameterDataTypePtr = ^ParameterDataType;
  401.     ParameterDataType = RECORD
  402.         dataType:                OSType;                                    {  type of data this item is stored as }
  403.     END;
  404.  
  405. {
  406.    alternate (optional) data type -- main data type always required.  
  407.    Must be modified or deleted when modifying main data type.
  408.    Main data type must be modified when alternate is modified.
  409. }
  410.  
  411. CONST
  412.     kParameterAlternateDataType    = 'alt1';
  413.     kParameterTypeDataColorValue = 'cmlr';                        {  CMColor data (supported on machines with ColorSync) }
  414.     kParameterTypeDataCubic        = 'cubi';                        {  cubic bezier(s) (no built-in support) }
  415.     kParameterTypeDataNURB        = 'nurb';                        {  nurb(s) (no built-in support) }
  416.  
  417.  
  418. TYPE
  419.     ParameterAlternateDataEntryPtr = ^ParameterAlternateDataEntry;
  420.     ParameterAlternateDataEntry = RECORD
  421.         dataType:                OSType;                                    {  type of data this item is stored as }
  422.         alternateAtom:            QTAtomType;                                {  where to store }
  423.     END;
  424.  
  425.     ParameterAlternateDataTypePtr = ^ParameterAlternateDataType;
  426.     ParameterAlternateDataType = RECORD
  427.         numEntries:                LONGINT;
  428.         entries:                ARRAY [0..0] OF ParameterAlternateDataEntry;
  429.     END;
  430.  
  431. {  legal values for the parameter }
  432.  
  433. CONST
  434.     kParameterDataRange            = 'rang';
  435.  
  436.     kNoMinimumLongFixed            = $7FFFFFFF;                    {  ignore minimum/maxiumum values }
  437.     kNoMaximumLongFixed            = $80000000;
  438.     kNoScaleLongFixed            = 0;                            {  don't perform any scaling of value }
  439.     kNoPrecision                = -1;                            {  allow as many digits as format }
  440.  
  441. {  'text' }
  442.  
  443. TYPE
  444.     StringRangeRecordPtr = ^StringRangeRecord;
  445.     StringRangeRecord = RECORD
  446.         maxChars:                LONGINT;                                {  maximum length of string }
  447.         maxLines:                LONGINT;                                {  number of editing lines to use (1 typical, 0 to default) }
  448.     END;
  449.  
  450. {  'long' }
  451.     LongRangeRecordPtr = ^LongRangeRecord;
  452.     LongRangeRecord = RECORD
  453.         minValue:                LONGINT;                                {  no less than this }
  454.         maxValue:                LONGINT;                                {  no more than this }
  455.         scaleValue:                LONGINT;                                {  muliply content by this going in, divide going out }
  456.         precisionDigits:        LONGINT;                                {  # digits of precision when editing via typing }
  457.     END;
  458.  
  459. {  'enum' }
  460.     EnumRangeRecordPtr = ^EnumRangeRecord;
  461.     EnumRangeRecord = RECORD
  462.         enumID:                    LONGINT;                                {  'enum' list in root container to search within }
  463.     END;
  464.  
  465. {  'fixd' }
  466.     FixedRangeRecordPtr = ^FixedRangeRecord;
  467.     FixedRangeRecord = RECORD
  468.         minValue:                Fixed;                                    {  no less than this }
  469.         maxValue:                Fixed;                                    {  no more than this }
  470.         scaleValue:                Fixed;                                    {  muliply content by this going in, divide going out }
  471.         precisionDigits:        LONGINT;                                {  # digits of precision when editing via typing }
  472.     END;
  473.  
  474. {  'doub' }
  475. {  'bool'     }
  476.     BooleanRangeRecordPtr = ^BooleanRangeRecord;
  477.     BooleanRangeRecord = RECORD
  478.         maskValue:                LONGINT;                                {  value to mask on/off to set/clear the boolean }
  479.     END;
  480.  
  481. {  'rgb ' }
  482.     RGBRangeRecordPtr = ^RGBRangeRecord;
  483.     RGBRangeRecord = RECORD
  484.         minColor:                RGBColor;
  485.         maxColor:                RGBColor;
  486.     END;
  487.  
  488. {  'imag' }
  489.  
  490. CONST
  491.     kParameterImageNoFlags        = 0;
  492.  
  493.  
  494. TYPE
  495.     ImageRangeRecordPtr = ^ImageRangeRecord;
  496.     ImageRangeRecord = RECORD
  497.         imageFlags:                LONGINT;
  498.     END;
  499.  
  500. {  union of all of the above }
  501. {  UI behavior of a parameter }
  502.  
  503. CONST
  504.     kParameterDataBehavior        = 'ditl';
  505.  
  506.                                                                 {  items edited via typing }
  507.     kParameterItemEditText        = 'edit';                        {  edit text box }
  508.     kParameterItemEditLong        = 'long';                        {  long number editing box }
  509.     kParameterItemEditFixed        = 'fixd';                        {  fixed point number editing box }
  510.     kParameterItemEditDouble    = 'doub';                        {  double number editing box }
  511.                                                                 {  items edited via control(s) }
  512.     kParameterItemPopUp            = 'popu';                        {  pop up value for enum types }
  513.     kParameterItemRadioCluster    = 'radi';                        {  radio cluster for enum types }
  514.     kParameterItemCheckBox        = 'chex';                        {  check box for booleans }
  515.     kParameterItemControl        = 'cntl';                        {  item controlled via a standard control of some type }
  516.                                                                 {  special user items }
  517.     kParameterItemLine            = 'line';                        {  line }
  518.     kParameterItemColorPicker    = 'pick';                        {  color swatch & picker }
  519.     kParameterItemGroupDivider    = 'divi';                        {  start of a new group of items }
  520.     kParameterItemStaticText    = 'stat';                        {  display "parameter name" as static text }
  521.     kParameterItemDragImage        = 'imag';                        {  allow image display, along with drag and drop }
  522.                                                                 {  flags valid for lines and groups }
  523.     kGraphicsNoFlags            = $00000000;                    {  no options for graphics }
  524.     kGraphicsFlagsGray            = $00000001;                    {  draw lines with gray }
  525.                                                                 {  flags valid for groups }
  526.     kGroupNoFlags                = $00000000;                    {  no options for group -- may be combined with graphics options                         }
  527.     kGroupAlignText                = $00010000;                    {  edit text items in group have the same size }
  528.     kGroupSurroundBox            = $00020000;                    {  group should be surrounded with a box }
  529.     kGroupMatrix                = $00040000;                    {  side-by-side arrangement of group is okay }
  530.     kGroupNoName                = $00080000;                    {  name of group should not be displayed above box }
  531.                                                                 {  flags valid for popup/radiocluster/checkbox/control }
  532.     kDisableControl                = $00000001;
  533.     kDisableWhenNotEqual        = $00000001;
  534.     kDisableWhenEqual            = $00000011;
  535.     kDisableWhenLessThan        = $00000021;
  536.     kDisableWhenGreaterThan        = $00000031;                    {  flags valid for popups }
  537.     kPopupStoreAsString            = $00010000;
  538.  
  539.  
  540. TYPE
  541.     ControlBehaviorsPtr = ^ControlBehaviors;
  542.     ControlBehaviors = RECORD
  543.         groupID:                QTAtomID;                                {  group under control of this item }
  544.         controlValue:            LONGINT;                                {  control value for comparison purposes }
  545.     END;
  546.  
  547.     ParameterDataBehaviorPtr = ^ParameterDataBehavior;
  548.     ParameterDataBehavior = RECORD
  549.         behaviorType:            OSType;
  550.         behaviorFlags:            LONGINT;
  551.         CASE INTEGER OF
  552.         0: (
  553.             controls:            ControlBehaviors;
  554.             );
  555.     END;
  556.  
  557. {  higher level purpose of a parameter or set of parameters }
  558.  
  559. CONST
  560.     kParameterDataUsage            = 'use ';
  561.  
  562.     kParameterUsagePixels        = 'pixl';
  563.     kParameterUsageRectangle    = 'rect';
  564.     kParameterUsagePoint        = 'xy  ';
  565.     kParameterUsage3DPoint        = 'xyz ';
  566.     kParameterUsageDegrees        = 'degr';
  567.     kParameterUsageRadians        = 'rads';
  568.     kParameterUsagePercent        = 'pcnt';
  569.     kParameterUsageSeconds        = 'secs';
  570.     kParameterUsageMilliseconds    = 'msec';
  571.     kParameterUsageMicroseconds    = 'µsec';
  572.     kParameterUsage3by3Matrix    = '3by3';
  573.  
  574.  
  575. TYPE
  576.     ParameterDataUsagePtr = ^ParameterDataUsage;
  577.     ParameterDataUsage = RECORD
  578.         usageType:                OSType;                                    {  higher level purpose of the data or group }
  579.     END;
  580.  
  581. {  default value(s) for a parameter }
  582.  
  583. CONST
  584.     kParameterDataDefaultItem    = 'dflt';
  585.  
  586. { atoms that help to fill in data within the info window }
  587.     kParameterInfoLongName        = '©nam';
  588.     kParameterInfoCopyright        = '©cpy';
  589.     kParameterInfoDescription    = '©inf';
  590.     kParameterInfoWindowTitle    = '©wnt';
  591.     kParameterInfoPicture        = '©pix';
  592.     kParameterInfoIDs            = 1;
  593.  
  594. { flags for ImageCodecValidateParameters }
  595.     kParameterValidationNoFlags    = $00000000;
  596.     kParameterValidationFinalValidation = $00000001;
  597.  
  598.  
  599. TYPE
  600.     QTParameterValidationOptions        = LONGINT;
  601. {$IFC TYPED_FUNCTION_POINTERS}
  602.     ImageCodecMPDrawBandProcPtr = FUNCTION(refcon: UNIV Ptr; VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  603. {$ELSEC}
  604.     ImageCodecMPDrawBandProcPtr = ProcPtr;
  605. {$ENDC}
  606.  
  607.     ImageCodecMPDrawBandUPP = UniversalProcPtr;
  608.  
  609. CONST
  610.     uppImageCodecMPDrawBandProcInfo = $000003F0;
  611.  
  612. FUNCTION NewImageCodecMPDrawBandProc(userRoutine: ImageCodecMPDrawBandProcPtr): ImageCodecMPDrawBandUPP;
  613.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  614.     INLINE $2E9F;
  615.     {$ENDC}
  616.  
  617. FUNCTION CallImageCodecMPDrawBandProc(refcon: UNIV Ptr; VAR drp: ImageSubCodecDecompressRecord; userRoutine: ImageCodecMPDrawBandUPP): ComponentResult;
  618.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  619.     INLINE $205F, $4E90;
  620.     {$ENDC}
  621. {    codec selectors 0-127 are reserved by Apple }
  622. {    codec selectors 128-191 are subtype specific }
  623. {    codec selectors 192-255 are vendor specific }
  624. {    codec selectors 256-32767 are available for general use }
  625. {    negative selectors are reserved by the Component Manager }
  626. FUNCTION ImageCodecGetCodecInfo(ci: ComponentInstance; VAR info: CodecInfo): ComponentResult;
  627.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  628.     INLINE $2F3C, $0004, $0000, $7000, $A82A;
  629.     {$ENDC}
  630. FUNCTION ImageCodecGetCompressionTime(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; VAR spatialQuality: CodecQ; VAR temporalQuality: CodecQ; VAR time: UInt32): ComponentResult;
  631.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  632.     INLINE $2F3C, $0016, $0001, $7000, $A82A;
  633.     {$ENDC}
  634. FUNCTION ImageCodecGetMaxCompressionSize(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; quality: CodecQ; VAR size: LONGINT): ComponentResult;
  635.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  636.     INLINE $2F3C, $0012, $0002, $7000, $A82A;
  637.     {$ENDC}
  638. FUNCTION ImageCodecPreCompress(ci: ComponentInstance; VAR params: CodecCompressParams): ComponentResult;
  639.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  640.     INLINE $2F3C, $0004, $0003, $7000, $A82A;
  641.     {$ENDC}
  642. FUNCTION ImageCodecBandCompress(ci: ComponentInstance; VAR params: CodecCompressParams): ComponentResult;
  643.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  644.     INLINE $2F3C, $0004, $0004, $7000, $A82A;
  645.     {$ENDC}
  646. FUNCTION ImageCodecPreDecompress(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  647.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  648.     INLINE $2F3C, $0004, $0005, $7000, $A82A;
  649.     {$ENDC}
  650. FUNCTION ImageCodecBandDecompress(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  651.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  652.     INLINE $2F3C, $0004, $0006, $7000, $A82A;
  653.     {$ENDC}
  654. FUNCTION ImageCodecBusy(ci: ComponentInstance; seq: ImageSequence): ComponentResult;
  655.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  656.     INLINE $2F3C, $0004, $0007, $7000, $A82A;
  657.     {$ENDC}
  658. FUNCTION ImageCodecGetCompressedImageSize(ci: ComponentInstance; desc: ImageDescriptionHandle; data: Ptr; bufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; VAR dataSize: LONGINT): ComponentResult;
  659.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  660.     INLINE $2F3C, $0014, $0008, $7000, $A82A;
  661.     {$ENDC}
  662. FUNCTION ImageCodecGetSimilarity(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; desc: ImageDescriptionHandle; data: Ptr; VAR similarity: Fixed): ComponentResult;
  663.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  664.     INLINE $2F3C, $0014, $0009, $7000, $A82A;
  665.     {$ENDC}
  666. FUNCTION ImageCodecTrimImage(ci: ComponentInstance; Desc: ImageDescriptionHandle; inData: Ptr; inBufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; outData: Ptr; outBufferSize: LONGINT; flushProc: ICMFlushProcRecordPtr; VAR trimRect: Rect; progressProc: ICMProgressProcRecordPtr): ComponentResult;
  667.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  668.     INLINE $2F3C, $0024, $000A, $7000, $A82A;
  669.     {$ENDC}
  670. FUNCTION ImageCodecRequestSettings(ci: ComponentInstance; settings: Handle; VAR rp: Rect; filterProc: ModalFilterUPP): ComponentResult;
  671.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  672.     INLINE $2F3C, $000C, $000B, $7000, $A82A;
  673.     {$ENDC}
  674. FUNCTION ImageCodecGetSettings(ci: ComponentInstance; settings: Handle): ComponentResult;
  675.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  676.     INLINE $2F3C, $0004, $000C, $7000, $A82A;
  677.     {$ENDC}
  678. FUNCTION ImageCodecSetSettings(ci: ComponentInstance; settings: Handle): ComponentResult;
  679.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  680.     INLINE $2F3C, $0004, $000D, $7000, $A82A;
  681.     {$ENDC}
  682. FUNCTION ImageCodecFlush(ci: ComponentInstance): ComponentResult;
  683.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  684.     INLINE $2F3C, $0000, $000E, $7000, $A82A;
  685.     {$ENDC}
  686. FUNCTION ImageCodecSetTimeCode(ci: ComponentInstance; timeCodeFormat: UNIV Ptr; timeCodeTime: UNIV Ptr): ComponentResult;
  687.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  688.     INLINE $2F3C, $0008, $000F, $7000, $A82A;
  689.     {$ENDC}
  690. FUNCTION ImageCodecIsImageDescriptionEquivalent(ci: ComponentInstance; newDesc: ImageDescriptionHandle; VAR equivalent: BOOLEAN): ComponentResult;
  691.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  692.     INLINE $2F3C, $0008, $0010, $7000, $A82A;
  693.     {$ENDC}
  694. FUNCTION ImageCodecNewMemory(ci: ComponentInstance; VAR data: Ptr; dataSize: Size; dataUse: LONGINT; memoryGoneProc: ICMMemoryDisposedUPP; refCon: UNIV Ptr): ComponentResult;
  695.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  696.     INLINE $2F3C, $0014, $0011, $7000, $A82A;
  697.     {$ENDC}
  698. FUNCTION ImageCodecDisposeMemory(ci: ComponentInstance; data: Ptr): ComponentResult;
  699.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  700.     INLINE $2F3C, $0004, $0012, $7000, $A82A;
  701.     {$ENDC}
  702. FUNCTION ImageCodecHitTestData(ci: ComponentInstance; desc: ImageDescriptionHandle; data: UNIV Ptr; dataSize: Size; where: Point; VAR hit: BOOLEAN): ComponentResult;
  703.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  704.     INLINE $2F3C, $0014, $0013, $7000, $A82A;
  705.     {$ENDC}
  706. FUNCTION ImageCodecNewImageBufferMemory(ci: ComponentInstance; VAR params: CodecDecompressParams; flags: LONGINT; memoryGoneProc: ICMMemoryDisposedUPP; refCon: UNIV Ptr): ComponentResult;
  707.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  708.     INLINE $2F3C, $0010, $0014, $7000, $A82A;
  709.     {$ENDC}
  710. FUNCTION ImageCodecExtractAndCombineFields(ci: ComponentInstance; fieldFlags: LONGINT; data1: UNIV Ptr; dataSize1: LONGINT; desc1: ImageDescriptionHandle; data2: UNIV Ptr; dataSize2: LONGINT; desc2: ImageDescriptionHandle; outputData: UNIV Ptr; VAR outDataSize: LONGINT; descOut: ImageDescriptionHandle): ComponentResult;
  711.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  712.     INLINE $2F3C, $0028, $0015, $7000, $A82A;
  713.     {$ENDC}
  714. FUNCTION ImageCodecGetMaxCompressionSizeWithSources(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; quality: CodecQ; sourceData: CDSequenceDataSourcePtr; VAR size: LONGINT): ComponentResult;
  715.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  716.     INLINE $2F3C, $0016, $0016, $7000, $A82A;
  717.     {$ENDC}
  718. FUNCTION ImageCodecSetTimeBase(ci: ComponentInstance; base: UNIV Ptr): ComponentResult;
  719.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  720.     INLINE $2F3C, $0004, $0017, $7000, $A82A;
  721.     {$ENDC}
  722. FUNCTION ImageCodecSourceChanged(ci: ComponentInstance; majorSourceChangeSeed: UInt32; minorSourceChangeSeed: UInt32; sourceData: CDSequenceDataSourcePtr; VAR flagsOut: LONGINT): ComponentResult;
  723.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  724.     INLINE $2F3C, $0010, $0018, $7000, $A82A;
  725.     {$ENDC}
  726. FUNCTION ImageCodecFlushFrame(ci: ComponentInstance; flags: UInt32): ComponentResult;
  727.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  728.     INLINE $2F3C, $0004, $0019, $7000, $A82A;
  729.     {$ENDC}
  730. FUNCTION ImageCodecGetSettingsAsText(ci: ComponentInstance; VAR text: Handle): ComponentResult;
  731.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  732.     INLINE $2F3C, $0004, $001A, $7000, $A82A;
  733.     {$ENDC}
  734. FUNCTION ImageCodecGetParameterListHandle(ci: ComponentInstance; VAR parameterDescriptionHandle: Handle): ComponentResult;
  735.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  736.     INLINE $2F3C, $0004, $001B, $7000, $A82A;
  737.     {$ENDC}
  738. FUNCTION ImageCodecGetParameterList(ci: ComponentInstance; VAR parameterDescription: QTAtomContainer): ComponentResult;
  739.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  740.     INLINE $2F3C, $0004, $001C, $7000, $A82A;
  741.     {$ENDC}
  742. FUNCTION ImageCodecCreateStandardParameterDialog(ci: ComponentInstance; parameterDescription: QTAtomContainer; parameters: QTAtomContainer; dialogOptions: QTParameterDialogOptions; existingDialog: DialogPtr; existingUserItem: INTEGER; VAR createdDialog: QTParameterDialog): ComponentResult;
  743.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  744.     INLINE $2F3C, $0016, $001D, $7000, $A82A;
  745.     {$ENDC}
  746. FUNCTION ImageCodecIsStandardParameterDialogEvent(ci: ComponentInstance; VAR pEvent: EventRecord; createdDialog: QTParameterDialog): ComponentResult;
  747.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  748.     INLINE $2F3C, $0008, $001E, $7000, $A82A;
  749.     {$ENDC}
  750. FUNCTION ImageCodecDismissStandardParameterDialog(ci: ComponentInstance; createdDialog: QTParameterDialog): ComponentResult;
  751.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  752.     INLINE $2F3C, $0004, $001F, $7000, $A82A;
  753.     {$ENDC}
  754. FUNCTION ImageCodecStandardParameterDialogDoAction(ci: ComponentInstance; createdDialog: QTParameterDialog; action: LONGINT; params: UNIV Ptr): ComponentResult;
  755.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  756.     INLINE $2F3C, $000C, $0020, $7000, $A82A;
  757.     {$ENDC}
  758. FUNCTION ImageCodecNewImageGWorld(ci: ComponentInstance; VAR params: CodecDecompressParams; VAR newGW: GWorldPtr; flags: LONGINT): ComponentResult;
  759.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  760.     INLINE $2F3C, $000C, $0021, $7000, $A82A;
  761.     {$ENDC}
  762. FUNCTION ImageCodecDisposeImageGWorld(ci: ComponentInstance; theGW: GWorldPtr): ComponentResult;
  763.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  764.     INLINE $2F3C, $0004, $0022, $7000, $A82A;
  765.     {$ENDC}
  766. FUNCTION ImageCodecHitTestDataWithFlags(ci: ComponentInstance; desc: ImageDescriptionHandle; data: UNIV Ptr; dataSize: Size; where: Point; VAR hit: LONGINT; hitFlags: LONGINT): ComponentResult;
  767.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  768.     INLINE $2F3C, $0018, $0023, $7000, $A82A;
  769.     {$ENDC}
  770. FUNCTION ImageCodecValidateParameters(ci: ComponentInstance; parameters: QTAtomContainer; validationFlags: QTParameterValidationOptions; errorString: StringPtr): ComponentResult;
  771.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  772.     INLINE $2F3C, $000C, $0024, $7000, $A82A;
  773.     {$ENDC}
  774. FUNCTION ImageCodecGetBaseMPWorkFunction(ci: ComponentInstance; VAR workFunction: ComponentMPWorkFunctionUPP; VAR refCon: UNIV Ptr; drawProc: ImageCodecMPDrawBandUPP; drawProcRefCon: UNIV Ptr): ComponentResult;
  775.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  776.     INLINE $2F3C, $0010, $0025, $7000, $A82A;
  777.     {$ENDC}
  778. FUNCTION ImageCodecPreflight(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  779.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  780.     INLINE $2F3C, $0004, $0200, $7000, $A82A;
  781.     {$ENDC}
  782. FUNCTION ImageCodecInitialize(ci: ComponentInstance; VAR cap: ImageSubCodecDecompressCapabilities): ComponentResult;
  783.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  784.     INLINE $2F3C, $0004, $0201, $7000, $A82A;
  785.     {$ENDC}
  786. FUNCTION ImageCodecBeginBand(ci: ComponentInstance; VAR params: CodecDecompressParams; VAR drp: ImageSubCodecDecompressRecord; flags: LONGINT): ComponentResult;
  787.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  788.     INLINE $2F3C, $000C, $0202, $7000, $A82A;
  789.     {$ENDC}
  790. FUNCTION ImageCodecDrawBand(ci: ComponentInstance; VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  791.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  792.     INLINE $2F3C, $0004, $0203, $7000, $A82A;
  793.     {$ENDC}
  794. FUNCTION ImageCodecEndBand(ci: ComponentInstance; VAR drp: ImageSubCodecDecompressRecord; result: OSErr; flags: LONGINT): ComponentResult;
  795.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  796.     INLINE $2F3C, $000A, $0204, $7000, $A82A;
  797.     {$ENDC}
  798. FUNCTION ImageCodecQueueStarting(ci: ComponentInstance): ComponentResult;
  799.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  800.     INLINE $2F3C, $0000, $0205, $7000, $A82A;
  801.     {$ENDC}
  802. FUNCTION ImageCodecQueueStopping(ci: ComponentInstance): ComponentResult;
  803.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  804.     INLINE $2F3C, $0000, $0206, $7000, $A82A;
  805.     {$ENDC}
  806. FUNCTION ImageCodecDroppingFrame(ci: ComponentInstance; {CONST}VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  807.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  808.     INLINE $2F3C, $0004, $0207, $7000, $A82A;
  809.     {$ENDC}
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822. CONST
  823.     kMotionJPEGTag                = 'mjpg';
  824.     kJPEGQuantizationTablesImageDescriptionExtension = 'mjqt';
  825.     kJPEGHuffmanTablesImageDescriptionExtension = 'mjht';
  826.     kFieldInfoImageDescriptionExtension = 'fiel';
  827.  
  828.  
  829. TYPE
  830.     MotionJPEGApp1MarkerPtr = ^MotionJPEGApp1Marker;
  831.     MotionJPEGApp1Marker = RECORD
  832.         unused:                    LONGINT;
  833.         tag:                    LONGINT;
  834.         fieldSize:                LONGINT;
  835.         paddedFieldSize:        LONGINT;
  836.         offsetToNextField:        LONGINT;
  837.         qTableOffset:            LONGINT;
  838.         huffmanTableOffset:        LONGINT;
  839.         sofOffset:                LONGINT;
  840.         sosOffset:                LONGINT;
  841.         soiOffset:                LONGINT;
  842.     END;
  843.  
  844.  
  845. FUNCTION QTPhotoSetSampling(codec: ComponentInstance; yH: INTEGER; yV: INTEGER; cbH: INTEGER; cbV: INTEGER; crH: INTEGER; crV: INTEGER): ComponentResult;
  846.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  847.     INLINE $2F3C, $000C, $0100, $7000, $A82A;
  848.     {$ENDC}
  849. FUNCTION QTPhotoSetRestartInterval(codec: ComponentInstance; restartInterval: UInt16): ComponentResult;
  850.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  851.     INLINE $2F3C, $0002, $0101, $7000, $A82A;
  852.     {$ENDC}
  853. FUNCTION QTPhotoDefineHuffmanTable(codec: ComponentInstance; componentNumber: INTEGER; isDC: BOOLEAN; VAR lengthCounts: UInt8; VAR values: UInt8): ComponentResult;
  854.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  855.     INLINE $2F3C, $000C, $0102, $7000, $A82A;
  856.     {$ENDC}
  857. FUNCTION QTPhotoDefineQuantizationTable(codec: ComponentInstance; componentNumber: INTEGER; VAR table: UInt8): ComponentResult;
  858.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  859.     INLINE $2F3C, $0006, $0103, $7000, $A82A;
  860.     {$ENDC}
  861.  
  862.  
  863.  
  864.  
  865. { source identifier -- placed in root container of description, one or more required }
  866.  
  867. CONST
  868.     kEffectSourceName            = 'src ';
  869.  
  870.  
  871. { source type -- placed in the input map to identify the source kind }
  872.     kEffectDataSourceType        = 'dtst';
  873.  
  874. {  default effect types }
  875.     kEffectRawSource            = 0;                            {  the source is raw image data }
  876.     kEffectGenericType            = 'geff';                        {  generic effect for combining others }
  877.  
  878.  
  879. TYPE
  880.     EffectSourcePtr = ^EffectSource;
  881.     SourceDataPtr = ^SourceData;
  882.     SourceData = RECORD
  883.         CASE INTEGER OF
  884.         0: (
  885.             image:                CDSequenceDataSourcePtr;
  886.             );
  887.         1: (
  888.             effect:                EffectSourcePtr;
  889.             );
  890.     END;
  891.  
  892.     EffectSource = RECORD
  893.         effectType:                LONGINT;                                {  type of effect or kEffectRawSource if raw ICM data }
  894.         data:                    Ptr;                                    {  track data for this effect }
  895.         source:                    SourceData;                                {  source/effect pointers }
  896.         next:                    EffectSourcePtr;                        {  the next source for the parent effect }
  897.     END;
  898.  
  899.     EffectsFrameParamsPtr = ^EffectsFrameParams;
  900.     EffectsFrameParams = RECORD
  901.         frameTime:                ICMFrameTimeRecord;                        {  timing data }
  902.         effectDuration:            LONGINT;                                {  the duration of a single effect frame }
  903.         doAsync:                BOOLEAN;                                {  set to true if the effect can go async }
  904.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  905.         source:                    EffectSourcePtr;                        {  ptr to the source input tree }
  906.         refCon:                    Ptr;                                    {  storage for the effect }
  907.     END;
  908.  
  909.  
  910.  
  911. FUNCTION ImageCodecEffectSetup(effect: ComponentInstance; VAR p: CodecDecompressParams): ComponentResult;
  912.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  913.     INLINE $2F3C, $0004, $0300, $7000, $A82A;
  914.     {$ENDC}
  915. FUNCTION ImageCodecEffectBegin(effect: ComponentInstance; VAR p: CodecDecompressParams; ePtr: EffectsFrameParamsPtr): ComponentResult;
  916.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  917.     INLINE $2F3C, $0008, $0301, $7000, $A82A;
  918.     {$ENDC}
  919. FUNCTION ImageCodecEffectRenderFrame(effect: ComponentInstance; p: EffectsFrameParamsPtr): ComponentResult;
  920.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  921.     INLINE $2F3C, $0004, $0302, $7000, $A82A;
  922.     {$ENDC}
  923. FUNCTION ImageCodecEffectConvertEffectSourceToFormat(effect: ComponentInstance; sourceToConvert: EffectSourcePtr; requestedDesc: ImageDescriptionHandle): ComponentResult;
  924.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  925.     INLINE $2F3C, $0008, $0303, $7000, $A82A;
  926.     {$ENDC}
  927. FUNCTION ImageCodecEffectCancel(effect: ComponentInstance; p: EffectsFrameParamsPtr): ComponentResult;
  928.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  929.     INLINE $2F3C, $0004, $0304, $7000, $A82A;
  930.     {$ENDC}
  931. FUNCTION ImageCodecEffectGetSpeed(effect: ComponentInstance; parameters: QTAtomContainer; VAR pFPS: Fixed): ComponentResult;
  932.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  933.     INLINE $2F3C, $0008, $0305, $7000, $A82A;
  934.     {$ENDC}
  935.  
  936.  
  937.  
  938. { curve atom types and data structures }
  939.  
  940. CONST
  941.     kCurvePathAtom                = 'path';
  942.     kCurveEndAtom                = 'zero';
  943.     kCurveAntialiasControlAtom    = 'anti';
  944.     kCurveAntialiasOff            = 0;
  945.     kCurveAntialiasOn            = $FFFFFFFF;
  946.     kCurveFillTypeAtom            = 'fill';
  947.     kCurvePenThicknessAtom        = 'pent';
  948.     kCurveMiterLimitAtom        = 'mitr';
  949.     kCurveJoinAttributesAtom    = 'join';
  950.     kCurveMinimumDepthAtom        = 'mind';
  951.     kCurveDepthAlwaysOffscreenMask = $80000000;
  952.     kCurveTransferModeAtom        = 'xfer';
  953.     kCurveGradientAngleAtom        = 'angl';
  954.     kCurveGradientRadiusAtom    = 'radi';
  955.     kCurveGradientOffsetAtom    = 'cent';
  956.  
  957.     kCurveARGBColorAtom            = 'argb';
  958.  
  959.  
  960. TYPE
  961.     ARGBColorPtr = ^ARGBColor;
  962.     ARGBColor = RECORD
  963.         alpha:                    UInt16;
  964.         red:                    UInt16;
  965.         green:                    UInt16;
  966.         blue:                    UInt16;
  967.     END;
  968.  
  969.  
  970. CONST
  971.     kCurveGradientRecordAtom    = 'grad';
  972.  
  973.  
  974. TYPE
  975.     GradientColorRecordPtr = ^GradientColorRecord;
  976.     GradientColorRecord = RECORD
  977.         thisColor:                ARGBColor;
  978.         endingPercentage:        Fixed;
  979.     END;
  980.  
  981.     GradientColorPtr                    = ^GradientColorRecord;
  982.  
  983. CONST
  984.     kCurveGradientTypeAtom        = 'grdt';
  985.  
  986. { currently supported gradient types }
  987.     kLinearGradient                = 0;
  988.     kCircularGradient            = 1;
  989.  
  990.  
  991. TYPE
  992.     GradientType                        = LONGINT;
  993. FUNCTION CurveGetLength(effect: ComponentInstance; VAR target: gxPaths; index: LONGINT; VAR wideLength: wide): ComponentResult;
  994.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  995.     INLINE $2F3C, $000C, $0100, $7000, $A82A;
  996.     {$ENDC}
  997. FUNCTION CurveLengthToPoint(effect: ComponentInstance; VAR target: gxPaths; index: LONGINT; length: Fixed; VAR location: FixedPoint; VAR tangent: FixedPoint): ComponentResult;
  998.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  999.     INLINE $2F3C, $0014, $0101, $7000, $A82A;
  1000.     {$ENDC}
  1001. FUNCTION CurveNewPath(effect: ComponentInstance; VAR pPath: Handle): ComponentResult;
  1002.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1003.     INLINE $2F3C, $0004, $0102, $7000, $A82A;
  1004.     {$ENDC}
  1005. FUNCTION CurveCountPointsInPath(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; VAR pCount: UInt32): ComponentResult;
  1006.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1007.     INLINE $2F3C, $000C, $0103, $7000, $A82A;
  1008.     {$ENDC}
  1009. FUNCTION CurveGetPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; pointIndex: UInt32; VAR thePoint: gxPoint; VAR ptIsOnPath: BOOLEAN): ComponentResult;
  1010.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1011.     INLINE $2F3C, $0014, $0104, $7000, $A82A;
  1012.     {$ENDC}
  1013. FUNCTION CurveInsertPointIntoPath(effect: ComponentInstance; VAR aPoint: gxPoint; thePath: Handle; contourIndex: UInt32; pointIndex: UInt32; ptIsOnPath: BOOLEAN): ComponentResult;
  1014.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1015.     INLINE $2F3C, $0012, $0105, $7000, $A82A;
  1016.     {$ENDC}
  1017. FUNCTION CurveSetPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; pointIndex: UInt32; VAR thePoint: gxPoint; ptIsOnPath: BOOLEAN): ComponentResult;
  1018.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1019.     INLINE $2F3C, $0012, $0106, $7000, $A82A;
  1020.     {$ENDC}
  1021. FUNCTION CurveGetNearestPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; VAR thePoint: FixedPoint; VAR contourIndex: UInt32; VAR pointIndex: UInt32; VAR theDelta: Fixed): ComponentResult;
  1022.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1023.     INLINE $2F3C, $0014, $0107, $7000, $A82A;
  1024.     {$ENDC}
  1025. FUNCTION CurvePathPointToLength(ci: ComponentInstance; VAR aPath: gxPaths; startDist: Fixed; endDist: Fixed; VAR thePoint: FixedPoint; VAR pLength: Fixed): ComponentResult;
  1026.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1027.     INLINE $2F3C, $0014, $0108, $7000, $A82A;
  1028.     {$ENDC}
  1029. FUNCTION CurveCreateVectorStream(effect: ComponentInstance; VAR pStream: Handle): ComponentResult;
  1030.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1031.     INLINE $2F3C, $0004, $0109, $7000, $A82A;
  1032.     {$ENDC}
  1033. FUNCTION CurveAddAtomToVectorStream(effect: ComponentInstance; atomType: OSType; atomSize: Size; pAtomData: UNIV Ptr; vectorStream: Handle): ComponentResult;
  1034.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1035.     INLINE $2F3C, $0010, $010A, $7000, $A82A;
  1036.     {$ENDC}
  1037. FUNCTION CurveAddPathAtomToVectorStream(effect: ComponentInstance; pathData: Handle; vectorStream: Handle): ComponentResult;
  1038.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1039.     INLINE $2F3C, $0008, $010B, $7000, $A82A;
  1040.     {$ENDC}
  1041. FUNCTION CurveAddZeroAtomToVectorStream(effect: ComponentInstance; vectorStream: Handle): ComponentResult;
  1042.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1043.     INLINE $2F3C, $0004, $010C, $7000, $A82A;
  1044.     {$ENDC}
  1045. FUNCTION CurveGetAtomDataFromVectorStream(effect: ComponentInstance; vectorStream: Handle; atomType: LONGINT; VAR dataSize: LONGINT; VAR dataPtr: Ptr): ComponentResult;
  1046.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1047.     INLINE $2F3C, $0010, $010D, $7000, $A82A;
  1048.     {$ENDC}
  1049.  
  1050. { UPP call backs }
  1051. {$ALIGN RESET}
  1052. {$POP}
  1053.  
  1054. {$SETC UsingIncludes := ImageCodecIncludes}
  1055.  
  1056. {$ENDC} {__IMAGECODEC__}
  1057.  
  1058. {$IFC NOT UsingIncludes}
  1059.  END.
  1060. {$ENDC}
  1061.